<?php

namespace Academico\Controller;

use Academico\Model\Frequencia;

use Zend\Mvc\Controller\AbstractActionController;
use Zend\View\Model\ViewModel;

class FrequenciaController extends AbstractActionController
{
    public function indexAction()
    {
        $idTurma = 1;

        $view = new ViewModel();

        $mAula = new \Academico\Model\Aula();
        $view->rsAulas = $mAula->pegarPorTurma($idTurma)->toArray();

        $mVwAluno = new \Academico\Model\VwAluno();
        $view->rsAlunos = $mVwAluno->pegarPorTurma($idTurma);

        $mFrequencia = new \Academico\Model\Frequencia();
        $view->aFrequencias = $mFrequencia->agruparPorAulaEAluno($idTurma);
        return $view;
    }

    public function lancarAction()
    {
        $idAula = $this->params('aula');

        $idTurma = 1;

        $view = new ViewModel();

        $rowAula = null;
        $mAula = new \Academico\Model\Aula();
        if ($idAula) {
            $rsAula = $mAula->select(array('id_aula' => $idAula));
            $rowAula = $rsAula->current();

            $mFrequencia = new \Academico\Model\Frequencia();
            $view->aFrequencias = $mFrequencia->agruparPorAulaEAluno($idTurma);
        }

        $mVwAluno = new \Academico\Model\VwAluno();
        $view->rsAlunos = $mVwAluno->pegarPorTurma($idTurma);

        $view->rowAula = $rowAula;
        return $view;
    }

    public function salvarAction()
    {
        // recupera os dados enviados do formulário
        $idAula     = $this->getRequest()->getPost()->get('aula');
        $dtAula     = $this->getRequest()->getPost()->get('data');
        $stConteudo = $this->getRequest()->getPost()->get('conteudo');
        $aFrequencias = (array) $this->getRequest()->getPost()->get('aFrequencias');

        // instância o model que irá salvar na tabela
        $mAula = new \Academico\Model\Aula();

        // prepara dados para salvar
        $dados['dt_aula']     = \DateTime::createFromFormat('d/m/Y', $dtAula)->format('Y-m-d');
        $dados['st_conteudo'] = $stConteudo;

        // solicita que o model faça a gravação na tabela
        // verifica se existe o id da aula
        if ($idAula) {
            $mAula->update($dados, array('id_aula' => $idAula));
        } else {
            $mAula->insert($dados);
            $idAula = $mAula->getAdapter()->getDriver()->getConnection()->getLastGeneratedValue('frequencia.aula_id_aula_seq');
        }

        // grava as frequencias dos alunos
        $mFrequencia = new \Academico\Model\Frequencia();
        $mFrequencia->registrarPorAula($idAula, $aFrequencias);

        // redireciona para a tela depois da gravação
        $this->redirect()->toRoute('academico', array('controller' => 'frequencia'));
    }

    public function imprimirAction()
    {
        $view = new ViewModel();
        $view->setTerminal(true);
        return $view;
    }

    public function excluirAction()
    {
        $idAula = $this->params('aula');
        $mAula = new \Academico\Model\Aula();
        $mAula->delete(array('id_aula' => $idAula));

        // redireciona para a tela depois de excluir
        $this->redirect()->toRoute('academico', array('controller' => 'frequencia'));
    }
}
